import 'package:flutter/material.dart';
import 'package:mobile_app.core/core/presentation/theme/styles.dart';

import 'home_core_styles.dart';

class HomeCoreTextTheme {
  const HomeCoreTextTheme._internal({
    required this.searchBar,
    required this.keyboardTextField,
    required this.cardButton,
    required this.cardLexicalItemName,
    required this.keyboardCardLexicalItemName,
    required this.cardLexicalItemTranscription,
    required this.cardLexicalItemUnit,
    required this.cardKeyboardTextFieldPrimaryButton,
    required this.cardKeyboardTextFieldSecondaryButton,
    required this.cardLexicalItemUseCase,
    required this.cardLexicalItemBoldUseCase,
    required this.cardUseCaseViewTitle,
    required this.cardUnderlyingSurfaceBody,
    required this.cardSymbolInputSymbolButton,
    required this.cardSymbolInputSymbolCounter,
    required this.cardSymbolInputTextField,
    required this.segmentedControlLabel,
  });

  factory HomeCoreTextTheme.light({
    required Color primaryColor,
  }) {
    return HomeCoreTextTheme._internal(
      searchBar: HomeCoreStyles.searchBarTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      keyboardTextField: HomeCoreStyles.keyboardTextFieldTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      cardButton: HomeCoreStyles.cardButtonTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      cardLexicalItemName: HomeCoreStyles.cardLexicalItemNameTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      keyboardCardLexicalItemName: HomeCoreStyles.keyboardCardLexicalItemNameTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      cardLexicalItemTranscription: HomeCoreStyles.cardLexicalItemTranscriptionTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      cardLexicalItemUnit: HomeCoreStyles.cardLexicalItemUnitTextStyle.copyWith(
        color: CoreStyles.grey3,
      ),
      cardKeyboardTextFieldPrimaryButton:
          HomeCoreStyles.cardKeyboardTextFieldButtonTextStyle.copyWith(
        color: primaryColor,
      ),
      cardKeyboardTextFieldSecondaryButton:
          HomeCoreStyles.cardKeyboardTextFieldButtonTextStyle.copyWith(
        color: CoreStyles.grey3,
      ),
      cardLexicalItemUseCase: HomeCoreStyles.cardLexicalItemUseCaseTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      cardLexicalItemBoldUseCase: HomeCoreStyles.cardLexicalItemBoldUseCaseTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      cardUseCaseViewTitle: HomeCoreStyles.cardUseCaseViewTitleTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      cardUnderlyingSurfaceBody: HomeCoreStyles.cardUnderlyingSurfaceBodyTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      cardSymbolInputSymbolButton: HomeCoreStyles.cardSymbolInputSymbolButtonTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      cardSymbolInputSymbolCounter: HomeCoreStyles.cardSymbolInputSymbolCounterTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      cardSymbolInputTextField: HomeCoreStyles.cardSymbolInputTextFieldTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
      segmentedControlLabel: HomeCoreStyles.segmentedControlLabelTextStyle.copyWith(
        color: CoreStyles.defaultDarkTextColor,
      ),
    );
  }

  factory HomeCoreTextTheme.dark({
    required Color primaryColor,
  }) {
    return HomeCoreTextTheme._internal(
      searchBar: HomeCoreStyles.searchBarTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      keyboardTextField: HomeCoreStyles.keyboardTextFieldTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      cardButton: HomeCoreStyles.cardButtonTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      cardLexicalItemName: HomeCoreStyles.cardLexicalItemNameTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      keyboardCardLexicalItemName: HomeCoreStyles.keyboardCardLexicalItemNameTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      cardLexicalItemTranscription: HomeCoreStyles.cardLexicalItemTranscriptionTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      cardLexicalItemUnit: HomeCoreStyles.cardLexicalItemUnitTextStyle.copyWith(
        color: CoreStyles.grey3,
      ),
      cardKeyboardTextFieldPrimaryButton:
          HomeCoreStyles.cardKeyboardTextFieldButtonTextStyle.copyWith(
        color: primaryColor,
      ),
      cardKeyboardTextFieldSecondaryButton:
          HomeCoreStyles.cardKeyboardTextFieldButtonTextStyle.copyWith(
        color: CoreStyles.grey3,
      ),
      cardLexicalItemUseCase: HomeCoreStyles.cardLexicalItemUseCaseTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      cardLexicalItemBoldUseCase: HomeCoreStyles.cardLexicalItemBoldUseCaseTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      cardUseCaseViewTitle: HomeCoreStyles.cardUseCaseViewTitleTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      cardUnderlyingSurfaceBody: HomeCoreStyles.cardUnderlyingSurfaceBodyTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      cardSymbolInputSymbolButton: HomeCoreStyles.cardSymbolInputSymbolButtonTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      cardSymbolInputSymbolCounter: HomeCoreStyles.cardSymbolInputSymbolCounterTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      cardSymbolInputTextField: HomeCoreStyles.cardSymbolInputTextFieldTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
      segmentedControlLabel: HomeCoreStyles.segmentedControlLabelTextStyle.copyWith(
        color: CoreStyles.defaultLightTextColor,
      ),
    );
  }

  final TextStyle searchBar;
  final TextStyle keyboardTextField;
  final TextStyle cardButton;
  final TextStyle cardLexicalItemName;
  final TextStyle keyboardCardLexicalItemName;
  final TextStyle cardLexicalItemTranscription;
  final TextStyle cardLexicalItemUnit;
  final TextStyle cardKeyboardTextFieldPrimaryButton;
  final TextStyle cardKeyboardTextFieldSecondaryButton;
  final TextStyle cardLexicalItemUseCase;
  final TextStyle cardLexicalItemBoldUseCase;
  final TextStyle cardUseCaseViewTitle;
  final TextStyle cardUnderlyingSurfaceBody;
  final TextStyle cardSymbolInputSymbolButton;
  final TextStyle cardSymbolInputSymbolCounter;
  final TextStyle cardSymbolInputTextField;
  final TextStyle segmentedControlLabel;
}
